main() {
  //入口函数
  //打印
  print('hello world');

  //常量 <编译时确定>
  const a = 10;
  print(a);

// 变量
  var b = 20;
  print(b);
  b = 30;
  print(b);

//常量 <运行时确定>
  final c = 30 + b;
  print(c);

// 变量 <运行时确定>
  var d = 40;
  print(d);
  d = 50;
  print(d);

//字符串类型
  String str = '张三';
  print(str);
// 字符串拼接
  print('hello' + 'world');
  print('hello' + 'world' + '123');
  print('hello' + 'world' + '123' + '456');
// 字符串长度
  print(str.length);
// 字符串截取
  print(str.substring(0, 2));
// 字符串替换
  print(str.replaceAll('张三', '李四'));
// 字符串分割
  print(str.split(''));
// 字符串转整数
  print(int.parse('123'));
// 整数转字符串
  print(123.toString());
// 字符串转浮点数
  print(double.parse('123.456'));
// 浮点数转字符串
  print(123.456.toString());
// 字符串转布尔值
  print(bool.parse('true'));
// 布尔值转字符串
  print(true.toString());
// 字符串转字符
  print('a'.codeUnitAt(0));
// 字符转字符串
  print(String.fromCharCode(97));
// 字符串转列表
  print('hello'.split(''));
// 列表转字符串
  print(['a', 'b', 'c'].join(''));
// 字符串转数组
  print('hello'.codeUnits);
// 数组转字符串
  print(String.fromCharCodes([97, 98, 99]));

//模板字符串
  String str1 = 'hello';
  String str2 = 'world';
  print('$str1 $str2');
  print('${str1} ${str2}');
  print('${str1} ${str2} 123');
  print('${str1} ${str2} 123 456');
// 模板字符串中可以使用表达式
  print('${str1} ${str2} ${123 + 456}');

  print("------列表遍历------");
  List list = [1, 2, 3, 4, 5];
  for (var i = 0; i < list.length; i++) {
    print(list[i]);
  }

  print("------列表遍历2------");
  for (var item in list) {
    print(item);
  }

  print("------尾部添加数组------");
  list.add(6);
  print(list);
  // 头部添加数组
  list.insert(0, 0);
  print(list);
  // 删除数组
  list.remove(6);
  print(list);
  // 删除数组
  list.removeAt(0);
  print(list);
  // 数组长度
  print(list.length);
  // 数组是否为空
  print(list.isEmpty);
  // 数组是否不为空
  print(list.isNotEmpty);
  // 数组是否包含某个元素
  print(list.contains(1));

  print("------尾部添加一个数组------");
  List list1 = [8, 7, 9, 6, 8];
  list.addAll(list1);
  print(list);
  // 数组排序
  list.sort();
  print(list);
  // 数组反转
  
  print(list);
  // 数组清空
  list.clear();
  print(list);


}
